今天主要分享 聯合索引分兩種(其實也是前面提到的主鍵索引/輔助索引或稱二級索引的區分)
以及接下來要介紹的聯合索引「最左匹配原則」
假設我們創建了一個聯合索引 (a, b, c)
以下三種查詢可以利用聯合索引
where a=1
where a=1 and b=2 and c=3
where a=1 and b=2
因為有走最左匹配
以下不能利用聯合索引
where b=2
where c=3
where b=2 and c=3
之所以聯合索引失效,是因為 a 欄位在全局是有序的, b c 欄位在局部是有序的
如果直接 where b=3, 這樣在整顆 BTree 掃描的時候,只能整棵樹跑一遍比對
但如果 where a=1 and b=2 的話,會先定位 a=1 的資料rows,接著局部的 b有序,就能加速查詢了!
聯合索引「最左匹配原則」也是面試考題唷,在這邊介紹給大家,不過確實聯合索引目前介紹的還差很多,樓主會在未來把相關知識補足邊加上一些測試案例再更新此篇的!
明天先開始往鎖來介紹!